import { request } from '@/utils/request/axios';
import { ErrorMessageMode, PageData, PageRequest } from '#/request';

import { EntityUserInputDto, EntityUserOutputDto } from './model';

/** 管理-用户数据权限枚举 */
enum Api {
  /** 读取用户数据权限列表信息 */
  Read = '/api/admin/userEntity/read',

  /** 新增用户数据权限信息 */
  Create = '/api/admin/userEntity/create',
  /** 更新用户数据权限信息 */
  Update = '/api/admin/userEntity/update',
  /** 删除用户数据权限信息 */
  Delete = '/api/admin/userEntity/delete',
}

// #region 读取用户数据权限列表信息
/**
 * 读取用户数据权限列表信息
 * @param params 分页请求
 * @param mode 错误消息模型
 */
export function readUserEntities(params: PageRequest, mode: ErrorMessageMode = 'message') {
  return request.post<PageData<EntityUserOutputDto>>(
    {
      url: Api.Read,
      params: params,
    },
    {
      errorMessageMode: mode,
    },
  );
}
// #endregion

// #region 新增用户数据权限信息
/**
 * 新增用户数据权限信息
 * @param dtos 用户数据权限信息
 * @param mode 错误消息模型
 */
export function createUserEntities(dtos: EntityUserInputDto[], mode: ErrorMessageMode = 'message') {
  return request.post(
    {
      url: Api.Create,
      params: dtos,
    },
    {
      errorMessageMode: mode,
    },
  );
}
// #endregion
// #region 更新用户数据权限信息
/**
 * 更新用户数据权限信息
 * @param dtos 用户数据权限信息
 * @param mode 错误消息模型
 */
export function updateUserEntities(dtos: EntityUserInputDto[], mode: ErrorMessageMode = 'message') {
  return request.post(
    {
      url: Api.Update,
      params: dtos,
    },
    {
      errorMessageMode: mode,
    },
  );
}
// #endregion
// #region 删除用户数据权限信息
/**
 * 删除用户数据权限信息
 * @param ids 用户数据权限编号集合
 * @param mode 错误消息模型
 */
export function deleteUserEntities(ids: (string | bigint)[], mode: ErrorMessageMode = 'message') {
  return request.post(
    {
      url: Api.Delete,
      params: ids,
    },
    {
      errorMessageMode: mode,
    },
  );
}
// #endregion
